{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "# Tabular Data Explanation Benchmarking: Xgboost Regression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "This notebook demonstrates how to use the benchmark utility to benchmark the performance of an explainer for tabular data. In this demo, we showcase explanation performance for [TreeExplainer][treeexplainer_doclink]. The metrics used to evaluate are \"keep positive\" and \"keep negative\". The masker used here is [IndependentMasker][indmasker_doclink] but can also generalize to other tabular maskers. \n",
    "\n",
    "The new `benchmark` utility uses the new API with MaskedModel as wrapper around user-imported model and evaluates masked values of inputs.\n",
    "\n",
    "[treeexplainer_doclink]: ../../../generated/shap.TreeExplainer.rst#shap.TreeExplainer\n",
    "[indmasker_doclink]: ../../../generated/shap.maskers.Independent.rst#shap.maskers.Independent"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-19T18:27:13.000431453Z",
     "start_time": "2023-10-19T18:27:10.273671927Z"
    },
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import xgboost\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "import shap\n",
    "import shap.benchmark as benchmark"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## Load Data and Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-19T18:27:13.632300747Z",
     "start_time": "2023-10-19T18:27:13.041684876Z"
    },
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# create trained model for prediction function\n",
    "untrained_model = xgboost.XGBRegressor(n_estimators=100, subsample=0.3)\n",
    "X, y = shap.datasets.california()\n",
    "X = X.values\n",
    "\n",
    "test_size = 0.3\n",
    "random_state = 0\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=test_size, random_state=random_state)\n",
    "\n",
    "model = untrained_model.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## Define Explainer Masker"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-19T18:27:13.646468289Z",
     "start_time": "2023-10-19T18:27:13.631831092Z"
    },
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# use Independent masker as default\n",
    "masker = shap.maskers.Independent(X)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## Create Explainer Object"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-19T18:27:13.807047523Z",
     "start_time": "2023-10-19T18:27:13.639331017Z"
    },
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# tree explainer is used\n",
    "explainer = shap.Explainer(model, masker)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## Run SHAP Explanation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-19T18:27:51.633979886Z",
     "start_time": "2023-10-19T18:27:13.808642840Z"
    },
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 98%|===================| 20313/20640 [00:38<00:00]        "
     ]
    }
   ],
   "source": [
    "shap_values = explainer(X)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## Define Metrics (Sort Order & Perturbation Method)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-19T18:27:51.635039203Z",
     "start_time": "2023-10-19T18:27:51.633811769Z"
    },
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "sort_order = \"positive\"\n",
    "perturbation = \"keep\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## Benchmark Explainer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-19T18:28:20.607251305Z",
     "start_time": "2023-10-19T18:27:51.636823115Z"
    },
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "92b8af2033914663b4129e9938c95760",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": "SequentialMasker:   0%|          | 0/20640 [00:00<?, ?it/s]"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": "<Figure size 640x480 with 1 Axes>"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sp = benchmark._sequential.SequentialPerturbation(explainer.model, explainer.masker, sort_order, perturbation)\n",
    "sp_result = sp(\"SequentialPerturbation\", shap_values.values, X)\n",
    "sp.plot(sp_result.curve_x, sp_result.curve_y, sp_result.value)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-19T18:28:20.651729706Z",
     "start_time": "2023-10-19T18:28:20.609001824Z"
    },
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "sort_order = \"negative\"\n",
    "perturbation = \"keep\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-19T18:28:50.123076599Z",
     "start_time": "2023-10-19T18:28:20.649765735Z"
    },
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "6b727d22b664463fb59e747dafd1f37b",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": "SequentialMasker:   0%|          | 0/20640 [00:00<?, ?it/s]"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": "<Figure size 640x480 with 1 Axes>"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sp = benchmark._sequential.SequentialPerturbation(explainer.model, explainer.masker, sort_order, perturbation)\n",
    "sp_result = sp(\"SequentialPerturbation\", shap_values.values, X)\n",
    "sp.plot(sp_result.curve_x, sp_result.curve_y, sp_result.value)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
